草庐IT

c++ - std::equal_range 与 lambda

全部标签

c++ - 用于实时曲面 segmentation 的 GLUTesselator?

我正在尝试使用OpenGL制作vector绘图应用程序,这将允许用户实时查看结果。我设置它的方式是使用边缘标志回调,因此glutesselator只输出三角形,然后我将其传递给VBO。我已经尝试让我的所有算法尽可能快,但这不是我的问题所在。根据一些代码分析器,我的速度大幅下降发生在对GLUTessEndPolygon()的调用中,这是生成多边形的函数。我发现当形状超过100个输入顶点时,它变得非常非常慢并且基本上破坏了我为优化其他一切所做的所有努力。我能做什么?我提供(0,0,1)的法线。我还尝试了GL红皮书中的所有技巧。有没有一种方法可以使tesselatortesselate更快但

c++ - pthread-win32 扩展 sem_post_multiple

我目前正在围绕pthreads构建一个薄的C++包装器供内部使用。Windows和QNX都是目标,幸运的是pthreads-win32端口似乎工作得很好,而QNX符合我们实际目的的POSIX。现在,在实现信号量时,我点击了函数sem_post_multiple(sem_t*,int)这显然只在pthreads-win32上可用,但在QNX中缺失。顾名思义,该函数应该通过作为第二个参数给出的计数来增加信号量。据我所知,该函数既不是POSIX1b也不是POSIX1c的一部分。虽然目前对上述功能没有要求,但我仍然想知道为什么pthreads-win32提供该功能以及它是否有用。我可以尝试使用

c++ - 将 2D 位图转换为 3D 立方体模型的有效方法?

我想在opengl中创建32x32位图的立方体模型。例如,给定《super马里奥》中Bob-omb的2D位图,结果应如下所示:http://fc02.deviantart.net/fs49/f/2009/186/f/a/Bob_omb_in_Minecraft_by_Luafox.png这个想法是将位图中的每个2D像素表示为3D立方体。每个模型都代表游戏中的敌人,因此我需要能够快速渲染这些模型。这样做的好方法是什么?我所做的一项尝试是通过首先创建一个32x32x2的顶点网格,然后在适当的位置从这些顶点创建三角形以形成立方体面,从而从位图生成静态3D模型。我遇到的一个大问题是如何存储面部

c++ - POSIX 计时器信号未在信号处理程序中被阻止

我正在设置一个POSIX定时器以给定的速率调用一个函数。我设置了一个信号处理程序并初始化了定时器,等等……一切正常。然而,根据我读过的所有文档,当我在信号处理程序中时,我不应该从计时器接收到信号(它应该自动被阻止)。为了更进一步,我什至将sigaction的sa_mask设置为阻止所有信号......我仍然多次调用信号处理程序......设置处理程序://establishthesignalhandlersigset_tblockMask;structsigactionsigact;sigfillset(&blockMask);//sigemptyset(&blockMask);sig

c++ - 在本地类中定义 lambda 时,C2326 函数无法访问 'bar'

我遇到了一些涉及本地类和lambda的奇怪编译器错误。我已将其缩小为以下示例:intmain(){classtest{voidfoo(intbar){autolambda=[=](int){returnbar;};}};return0;}VS10说:errorC2326:'voidmain::test::foo(int)':functioncannotaccess'bar'在本地类中使用lambda是否有任何限制,或者这是编译器中的错误?谢谢四位的帮助。 最佳答案 我可以确认只有当类在函数中定义并且lambda接受参数时,才会在VS

c++ - 带有标准容器的 std::shared_ptr

我有一个容器shared_ptrs和我将这些对象交给WindowsAPI,稍后我使用原始ptr获得回调。我要找对shared_ptr事后。这可以用shared_ptr干净地完成吗?(不使用shared_from_this())。非常基本的例子:classCFoo{};typedefstd::shared_ptrCFooPtr;typedefstd::setCFooSet;externCFooSetm_gSet;voidSomeWindowsCallBack(CFoo*pRawPtr){m_gSet.erase(pRawPtr);}我知道这可以用intrusive_ptr来完成很容易,但

c++ - 如何读取 PRS/SKmapDat 文件?

我有these来自LegendofMana的图形文件,我想了解它是如何工作的。sizefilename149968TWR_I100.IMG35500TWR_RA00.IMG148736WAL_TMPL.PRS214574WAL_VLLG.PRS63762WM_D351.PIM1208WM_D352.DAT63446WM_D352.PIM1208WM_D353.DAT问题是弄清楚像素是如何存储的。PRS文件在header中包含字符串SKmapDat。我很确定DAT文件是调色板。这里有没有人以前看过这些类型的文件,因此知道如何阅读它们? 最佳答案

c++ - 多重指数实现

有人知道已实现的多重指数算法吗?我正在寻找给定vectorA的东西,B将使用那里的一些快速算法计算A[i]^B[i]的乘积。谢谢! 最佳答案 以下假定您的数据是float。如果您使用的是多精度整数,请指定您的要求。干净的数值方式当然是先取log。事实上,即使结果是有限的,部分产品也很容易下溢/溢出。惯用的对应C++程序是:#include#include#includedoublef(doublex,doubley){returny*std::log(x);}templatedoublemulti_exponentiation(Ia

c++ - 由于抽象模板 arg 的实例化,boost::lambda 表达式无法编译。任何解释和/或解决方法?

我正在学习boost::lambda,并且我已经设法创造了一个我目前所知道的无法解决的情况。显然在boost::lambda的内部,以下示例导致尝试实例化抽象类AbstractFoo,并阻止lambda表达式编译。问题是我不知道它为什么要实例化它,所以我无法尝试解决它。​​任何boost::lambda专家都可以:请告诉我为什么会这样?建议解决方法?例子:#include#include#include#includestructAbstractFoo{typedefboost::shared_ptrPtr;virtualintit()const=0;};structBar:publi

Boost.Range 的 C++ 元组 - 获取元素类型的元组?

我正在试验Boost.Range和Boost元组。如果我有一个范围元组,我如何键入定义一个元组或相应的元素值?换句话说,我用什么来代替/*?*/:typedefboost::tuples::tuple&,char[]>TupleOfRanges;typedef/*?*/TupleOfElements;我当然可以手工完成,我会写:typedefboost::tuples::tupleTupleOfElements;甚至:typedeftypenameboost::tuples::element::typeRange0;typedeftypenameboost::tuples::eleme